#include "pcl/point_types.h"
#include "pcl/PCLPointCloud2.h"
#include "pcl/conversions.h"
#include <cmath>
#include <CL/cl.h>

void init_opencl();
void check_opencl_error(cl_int err, const std::string& msg);
void transform_pointcloud(pcl::PointCloud<pcl::PointXYZI>::Ptr& cloud, 
                             const float* rotation, float x0, float y0, float z0);
void matrix_multiply(const float* a, const float* b, float* result);
void calculate_rotation_matrix(float alpha, float beta, float omega, float* rotation);
void release_opencl(void);
